package com.jnks.pojo.domain.dto;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.*;

/***
 *  @describe Redis缓存无人机数据结构
 *  @author Ryo
 *  @date 2024/4/23
 *  杰能科世智能安全科技（杭州）有限公司
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DroneRedis implements Serializable {

    /**
     * @describe 唯一标识符，代表同一架次，系统自动生成
     * @author Ryo
     * @date 2024/4/23
     */
    @Builder.Default
    private String droneUK = UUID.randomUUID().toString() + new Random().nextInt(1000);

    /**
     * @describe 无人机序列号（破解）
     * @author Ryo
     * @date 2024/4/23
     */
    private String droneSeriaID;

    /**
     * @describe 合作商ID
     * @author Ryo
     * @date 2024/4/23
     */
    private Integer partnerId;

    /**
     * @describe 合作商名称
     * @author Ryo
     * @date 2024/4/23
     */
    private String partnerName;

    /**
     * @describe 简称
     * @author Ryo
     * @date 2024/4/23
     */
    private String shortName;

    /**
     * @describe 侦测类型：1-TDOA，2-AOA，3-电子身份证，4-迅蚁，5-便携式侦测
     * @author Ryo
     * @date 2024/4/23
     */
    private Integer type;

    /**
     * @describe 时间戳
     * @author Ryo
     * @date 2024/4/23
     */
    private String intrusionStartTime;

    /**
     * @describe 批次
     * @author Ryo
     * @date 2024/4/23
     */
    private String batchNum;

    /**
     * @describe 型号
     * @author Ryo
     * @date 2024/4/23
     */
    private String model;

    /**
     * @describe 品牌ID
     * @author Ryo
     * @date 2024/4/23
     */
    private Integer brandId;

    /**
     * @describe 品牌名称
     * @author Ryo
     * @date 2024/4/23
     */
    private String brand;

    /**
     * @describe 型号ID
     * @author Ryo
     * @date 2024/4/23
     */
    private Integer modelId;

    /**
     * @describe 起飞时间
     * @author Ryo
     * @date 2024/4/23
     */
    private Date takeoffTime;

    /**
     * @describe 飞手精度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double driverLongitude;

    /**
     * @describe 飞手纬度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double driverLatitude;

    /**
     * @describe GPS飞手精度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double gpsDriverLongitude;

    /**
     * @describe GPS飞手纬度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double gpsDriverLatitude;

    /**
     * @describe 起飞经度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double takeoffLongitude;

    /**
     * @describe 起飞纬度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double takeoffLatitude;

    /**
     * @describe GPS起飞经度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double gpsTakeoffLongitude;

    /**
     * @describe GPS起飞纬度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double gpsTakeoffLatitude;

    /**
     * @describe 接收最新一条数据时间
     * @author Ryo
     * @date 2024/4/23
     */
    private Date lastAcceptTime;

    /**
     * @describe 布防区ID
     * @author Ryo
     * @date 2024/4/23
     */
    private Integer armedzoneId;

    /**
     * @describe 预计降落时间（lastAcceptTime + 90秒）
     * @author Ryo
     * @date 2024/4/23
     */
    private Date landingTime;

    /**
     * @describe 持续时间
     * @author Ryo
     * @date 2024/4/23
     */
    private Long lastingTime;

    /**
     * @describe 注册飞手信息
     * @author Ryo
     * @date 2024/4/23
     */
    private DroneRegDriver driver;

    /**
     * @describe 飞行报备记录ID
     * @author Ryo
     * @date 2024/4/23
     */
    private Integer reportId;

    /**
     * @describe 报备类型1-警用无人机2-在浙飞（警察叔叔）3-在浙飞（小程序）
     * @author Ryo
     * @date 2024/4/23
     */
    private Integer reportType;

    /**
     * @describe 发现地点（如断桥，奥体中心等）
     * @author Ryo
     * @date 2024/4/23
     */
    private String discoveryPlace;

    /**
     * @describe 当前经度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double curLongitude;

    /**
     * @describe 当前纬度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double curLatitude;

    /**
     * @describe 当前行政区域
     * @author Ryo
     * @date 2024/4/23
     */
    private RegeoCode curRegeoCode;

    /**
     * @describe 当前速度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double curSpeed;

    /**
     * @describe 当前高度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double curHeight;

    /**
     * @describe 当前频段
     * @author Ryo
     * @date 2024/4/23
     */
    private Double curFrequency;

    /**
     * @describe 当前距离
     * @author Ryo
     * @date 2024/4/23
     */
    private Double curDistance;

    /**
     * @describe 当前角度
     * @author Ryo
     * @date 2024/4/23
     */
    private Double curDirection;

    /**
     * @describe 不同坐标数量，与上个坐标不同+1
     * @author Ryo
     * @date 2024/4/23
     */
    @Builder.Default
    private Integer distinctCoorCount = 0;

    /**
     * @describe 推送标志，未推送前为0，已推送为1
     * @author Ryo
     * @date 2024/4/23
     */
    @Builder.Default
    private Integer discoveryPush = 0;

    /**
     * @describe 语音文件路径（反恐）
     * @author Ryo
     * @date 2024/4/23
     */
    private String audioPath;

    /**
     * @describe 语音文件路径（特警）
     * @author Ryo
     * @date 2024/4/23
     */
    private String audioPathSwat;

    /**
     * @describe AOA设备ID
     * @author yanczhong
     * @date 2022/11/29
     */
    private Integer aoaDeviceId;

    /**
     * @describe 无人机坐标
     * @author yanczhong
     * @date 2022/8/12
     */
    private List<DroneCoor> coors;

    /**
     * @describe 无人机经过区域
     * @author yanczhong
     * @date 2022/8/15
     */
    private List<DroneRoute> routes;

    /**
     * @describe 无人机经过的所有重点单位（反恐）
     * @author yanczhong
     * @date 2022/8/17
     */
    private Set<DroneCompany> companys;

    /**
     * @describe 无人机经过的所有目标单位（特警）
     * @author yanczhong
     * @date 2022/8/17
     */
    private Set<DroneTarget> targets;

    /**
     * @describe 无人机经过的活动ID列表
     * @author yanczhong
     * @date 2022/8/29
     */
    private List<DroneActivity> activitys;

    /**
     * @describe 电子身份证当前状态
     * @author yanczhong
     * @date 2022/9/15
     */
    private DroneEIDState droneEIDState;

    /**
     * @describe 警用无人机
     * @author yanczhong
     * @date 2022/10/24
     */
    @Builder.Default
    private Integer policeDrone = 0;

    /***
     *  @describe 无人机当前所在目标单位防御圈
     *  @author yanczhong
     *  @date 2023/2/6
     *  杰能科世智能安全科技（杭州）有限公司
     */
    private Set<DroneTarget> currentTargets;

    /***
     *  @describe 无人机当前所在重点单位防御圈
     *  @author yanczhong
     *  @date 2023/2/6
     *  杰能科世智能安全科技（杭州）有限公司
     */
    private Set<DroneCompany> currentCompanys;

    /**
     * @describe 发送过预警短信
     * @author yanczhong
     * @date 2023/3/3
     */
    @Builder.Default
    private Set<String> smsSet = new HashSet<>();

    /**
     * @describe AOA设备实时经度
     * @author yanczhong
     * @date 2023/3/3
     */
    private String devLongitude;

    /**
     * @describe AOA设备实时纬度
     * @author yanczhong
     * @date 2023/3/3
     */
    private String devLatitude;

    /***
     *  @describe 是否经过亚运场馆1-是，0或空-否
     *  @author yanczhong
     *  @date 2023/5/9
     *  杰能科世智能安全科技（杭州）有限公司
     */
    private Integer passbyAsianGamesVenue;

    /**
     * @describe 当前相邻辖区
     * @author yanczhong
     * @date 2023/5/29
     */
    private Set<Integer> curNeighbors;

    /**
     * @describe 重点单位反恐等级（进入重点单位列表所包含的所有等级）
     * @author yanczhong
     * @date 2023/4/14
     */
    @Builder.Default
    private Set strikeLevel = new HashSet<>();

    /**
     * @describe 飞手位置变更列表
     * @author yanczhong
     * @date 2024/1/9
     */
    @Builder.Default
    private Set<DroneDriverLocation> driverLocationList = new HashSet<>();

    /**
     * @describe 是否经过禁飞区1-是0-否
     * @author yanczhong
     * @date 2023/8/9
     */
    @Builder.Default
    private Integer passbyForbitArea = 0;

    @Builder.Default
    private List<String> coorKeyList = new ArrayList<>();

    private String curCoorKey;

}
